const axios = require('axios');

const baseURL = 'http://localhost:7002/api/v1';

async function testErrorHandling() {
  try {
    console.log('测试错误处理中间件...\n');

    // 1. 测试数据库关联错误（之前的问题）
    console.log('1. 测试社交接口（之前有关联错误）...');
    try {
      const response = await axios.get(`${baseURL}/social/public-outfits?page=1&pageSize=5`);
      console.log('✅ 社交接口正常:', response.data);
    } catch (error) {
      console.log('❌ 社交接口错误:', error.response?.data || error.message);
    }

    // 2. 测试认证错误
    console.log('\n2. 测试认证错误...');
    try {
      const response = await axios.get(`${baseURL}/user/profile`);
      console.log('用户信息:', response.data);
    } catch (error) {
      console.log('✅ 认证错误处理正常:', error.response?.data);
    }

    // 3. 测试404错误
    console.log('\n3. 测试404错误...');
    try {
      const response = await axios.get(`${baseURL}/nonexistent-endpoint`);
      console.log('响应:', response.data);
    } catch (error) {
      console.log('✅ 404错误处理正常:', error.response?.data);
    }

    // 4. 测试登录（正常流程）
    console.log('\n4. 测试登录...');
    try {
      const loginResponse = await axios.post(`${baseURL}/user/login`, {
        username: 'demo',
        password: '123456'
      });
      
      if (loginResponse.data.code === 200) {
        console.log('✅ 登录成功');
        
        const token = loginResponse.data.data.token;
        
        // 5. 测试需要认证的接口
        console.log('\n5. 测试认证后的接口...');
        const authHeaders = { 'Authorization': `Bearer ${token}` };
        
        try {
          const profileResponse = await axios.get(`${baseURL}/user/profile`, {
            headers: authHeaders
          });
          console.log('✅ 用户信息获取成功:', profileResponse.data.data?.username);
        } catch (error) {
          console.log('❌ 用户信息获取失败:', error.response?.data);
        }

        try {
          const socialResponse = await axios.get(`${baseURL}/social/feed?page=1&pageSize=5`, {
            headers: authHeaders
          });
          console.log('✅ 社交动态获取成功');
        } catch (error) {
          console.log('❌ 社交动态获取失败:', error.response?.data);
        }
        
      } else {
        console.log('❌ 登录失败:', loginResponse.data);
      }
    } catch (error) {
      console.log('❌ 登录请求失败:', error.response?.data || error.message);
    }

    console.log('\n=== 测试完成 ===');

  } catch (error) {
    console.error('❌ 测试过程中发生错误:', error.message);
  }
}

testErrorHandling();
